package com.luxsoft.siipap.em.replica.importadores.dbf.cxc;

import java.sql.SQLException;
import java.util.Date;

import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;

import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.util.DateUtil;
import com.luxsoft.siipap.ventas.model.Venta;

/**
 * Actualiza las cancelaciones de ventas originadas en SIIPAP DBF
 * 
 * @author Ruben Cancino Ramos
 *
 */
public class ActualizadorDeVentasCanceladasDBF {
	
	public void actualizar(final Date dia){
		//Buscar las ventas importadas con cancelado
		getHibernate().execute(new HibernateCallback(){
			public Object doInHibernate(Session session)throws HibernateException, SQLException {
				String hql="from Venta v " +
						" where v.fecha=? " +
						" and v.cancelacionDBF=true";						
				ScrollableResults rs=session.createQuery(hql)
					.setParameter(0, dia,Hibernate.DATE)					
					.scroll();
				while(rs.next()){
					Venta v=(Venta)rs.get()[0];
					if(v.getCancelacion()==null){
						System.out.println("Cancelando en SWX: "+v.getCancelacionDBF());
					}else
						System.out.println("OK en SWX: "+v.getCancelacionDBF());
				}
				return null;
			}			
		});
	}
	
	private HibernateTemplate getHibernate(){
		return ServiceLocator2.getHibernateTemplate();
	}
	
	public static void main(String[] args) {
		ActualizadorDeVentasCanceladasDBF srv=new ActualizadorDeVentasCanceladasDBF();
		srv.actualizar(DateUtil.toDate("02/03/2009"));
	}

}
